import UIKit

public protocol MarkdownViewDelegate: AnyObject {
    /// 当用户点击图片时调用
    /// - Parameter url: 图片的URL
    func markdownView(didTapImage url: URL)
    
    /// 当图片加载成功时调用
    /// - Parameters:
    ///   - url: 图片的URL
    ///   - image: 加载的图片
    func markdownView(didLoadImage image: UIImage, from url: URL)
    
    /// 当图片加载失败时调用
    /// - Parameters:
    ///   - url: 图片的URL
    ///   - error: 错误信息
    func markdownView(didFailToLoadImage url: URL, error: Error)
    
    /// 当用户点击链接时调用
    /// - Parameter url: 链接的URL
    func markdownView(didTapLink url: URL)
    
    /// 是否应该处理链接点击
    /// - Parameter url: 链接的URL
    /// - Returns: 如果返回 true，将处理链接点击；如果返回 false，将忽略链接点击
    func markdownView(shouldHandleLink url: URL) -> Bool
    
    /// 当链接处理成功时调用
    /// - Parameter url: 链接的URL
    func markdownView(didHandleLink url: URL)
    
    /// 当链接处理失败时调用
    /// - Parameters:
    ///   - url: 链接的URL
    ///   - error: 错误信息
    func markdownView(didFailToHandleLink url: URL, error: Error)
}

// 提供默认实现，使所有方法都是可选的
public extension MarkdownViewDelegate {
    func markdownView(didTapImage url: URL) {}
    func markdownView(didLoadImage image: UIImage, from url: URL) {}
    func markdownView(didFailToLoadImage url: URL, error: Error) {}
    func markdownView(didTapLink url: URL) {}
    func markdownView(shouldHandleLink url: URL) -> Bool { true }
    func markdownView(didHandleLink url: URL) {}
    func markdownView(didFailToHandleLink url: URL, error: Error) {}
} 